package com.wangzhen.spring.ioc.dependcy.exception;

import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;

/**
 * NoSuchBeanDefinitionException 和NoUniqueBeanDefinitionException 异常演示示例：
 * 1、NoUniqueBeanDefinitionException 继承自 NoSuchBeanDefinitionException
 * 2、NoUnique 一般是context中存在相同类型的多个实例，在getBean获取@Autowire的时候，beanFactory不确定要用哪一个
 *    可以指定primary或者 qualifer 来避免该异常
 */
public class NoUniqueBeanDefinitionExceptionDemo {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
        context.register(NoUniqueBeanDefinitionExceptionDemo.class);
        context.refresh();
        try {
            System.out.println(context.getBean(String.class));
        } catch (NoUniqueBeanDefinitionException e) {
            System.out.println("发生NoUniqueBeanDefinitionException异常了！");
            e.printStackTrace();
        }
        context.close();
    }

    @Bean
    public String hello() {
        return "hello";
    }

    @Bean
    public String world() {
        return "world";
    }
}
